package com.sdap2.service;

import com.sdap2.dto.DeviceDTO;
import com.sdap2.dto.DeviceDataResponse;
import com.sdap2.entity.Device;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.time.LocalDateTime;
import java.util.Optional;

public interface DeviceService {
    // 创建设备
    Device create(DeviceDTO dto, String token);
    
    // 更新设备
    Device update(Long id, DeviceDTO dto, String token);
    
    // 删除设备
    void delete(Long id, String token);
    
    // 获取设备详情
    Device getById(Long id, String token);
    
    // 分页查询大棚下的设备
    Page<Device> getPage(Long greenhouseId, Pageable pageable, String token);
    
    // 检查设备所属权
    boolean checkDeviceOwnership(Long deviceId, String token);
    
    // 根据设备序列号查询记录
    Page<?> getDeviceRecords(String serialNumber, LocalDateTime startTime,
                          LocalDateTime endTime, Pageable pageable, String token);

    // 获取设备最新记录
    Object getLatestRecord(String serialNumber, String token);

    /**
     * 根据设备序列号查找设备
     * @param serialNumber 设备序列号
     * @return 设备信息
     */
    Optional<Device> getDeviceBySerialNumber(String serialNumber);
} 